package com.loyal.client.impl;

import android.content.Context;

import androidx.annotation.IntRange;
import androidx.annotation.Nullable;

public interface Subscriber<T> {
    //
    Subscriber<T> withContext(@Nullable Context context);

    Subscriber<T> withContext(@Nullable Context context, int theme);

    Subscriber<T> setWhat(@IntRange(from = 2, to = 1000) int what);

    Subscriber<T> showProgressDialog(boolean showProgressDialog);

    Subscriber<T> setDialogMessage(CharSequence message);

    Subscriber<T> setTag(Object objTag);

    Subscriber<T> setCancelable(boolean cancelable);

    void setCanceledOnTouchOutside(boolean flag);

    void setSubscribeListener(SubscriberCallback<T> listener);

    void setDialogCallback(DialogCallback dialogCallback);

    void dispose();

    /***/
    void unsubscribe();

}
